package main

import "fmt"
// 传递匿名函数
func main() {
	i := 10
	add := func(a, b int) int {
		return a + b
	}
	i2 := callback(i, add)
	fmt.Println(i2)

	f := addfunc(1)
	i3 := f(2)
	fmt.Println(i3)
	sum := SumChangeable(1, 2, 3, 4, 5, 6)
	fmt.Println("sum", sum)
}

// 传递匿名函数
func callback(x int, f func(a, b int) int) int {
	return f(x, 1)
}

// 返回匿名函数
func addfunc(a int) func(b int) int {
	return func(b int) int {
		return  a + b
	}
}

// 可变参数
func SumChangeable(a ...int) int {
	sum := 0
	for _, v := range a {
		sum += v
	}
	return sum
}

